package org.example.design.state.test1;

/**
 * @author huangshen
 * @version 0
 * @description 表示"夜晚"状态的类
 * @since 2022/2/14 10:05
 */
public class NightState implements State {

    private static NightState state = null;

    private NightState() {}

    public static State getInstance() {
        synchronized(NightState.class){
            if(state == null){
                return new NightState();
            }
            return state;
        }
    }
    /**
     * 设置时间
     * @param context 管理状态接口
     * @param hour    时间
     */
    @Override
    public void doClock(Context context, int hour) {
        if (hour >= 9 && hour < 17) {
            context.changeState(DayState.getInstance());
        }
    }

    /**
     * 使用金库
     * @param context 管理状态接口
     */
    @Override
    public void doUser(Context context) {
        context.reCordLog("紧急:晚上使用金库");
    }

    /**
     * 按下警铃
     * @param context 管理状态接口
     */
    @Override
    public void doAlarm(Context context) {
        context.callSecurityCenter("按下警铃（晚上）");
    }

    /**
     * 正常通话
     * @param context 管理状态接口
     */
    @Override
    public void doPhone(Context context) {
        context.callSecurityCenter("晚上的通话录音");
    }

    @Override
    public String toString() {
        return "[晚上]";
    }
}
